package com.wn.demo03;

import java.lang.reflect.Method;

/**
 * @author yellow Docter
 * @date 2022 -07-05
 * @desc
 *  * 注解的解析:
 *  *    01 通过反射拿到Class对象
 *  *    02 通过反射拿到方法 Method对象
 *  *    03 判断这个方法是否被注解标记
 *  *    04  通过反射执行这个方法
 */
public class Demo01 {

    public static void main(String[] args) throws Exception {


        Class<DemoTest> clazz = (Class<DemoTest>) Class.forName("com.wn.demo03.DemoTest");

        DemoTest demoTest = clazz.newInstance();
        //拿到所有的方法
        Method[] declaredMethods = clazz.getDeclaredMethods();

        for (Method method : declaredMethods) {
            // 判断这个方法是否 被  MyTest.class 注解标记
            if (method.isAnnotationPresent(MyTest.class)){
                //拿到方法的名称
//                System.out.println(method.getName());
                // 执行方法
                method.invoke(demoTest,null);
            }
        }
    }

}
